// created by noellynch
// Aug 14, 2010

package com.sceneworker.app.input;

import com.jme.intersection.BoundingPickResults;
import com.jme.scene.Spatial;
import com.jme2utils.objects.AxesRep;
import com.jme2utils.objects.InputMode;

abstract	public class BaseSelectionHandler {
	protected static final float CAM_DELTA = 0.001f;

    protected BoundingPickResults mcl_picks;
    
    protected		InputMode		mi_inputMode;
    protected		boolean			mb_focusOn = true;
    protected		boolean			mb_mouseAlreadyDown = false;
    
    public	void	setFocusOn(boolean b_focusOn) {
    	mb_focusOn = b_focusOn;
    }
    
    public	boolean	isMouseDown() {
    	return mb_focusOn;
    }
    
    abstract	public	void	setInputMode(InputMode cl_ip);
    
    public	InputMode		getInputMode() {
    	return mi_inputMode;
    }
    
    abstract	public	Object	getCurrentSelection();
    abstract	public 	void 	setCurrentSelection(Object cl_sel);
    
    abstract	public	void	setTriangleSelectMode(boolean b_mode);
    abstract	public	boolean	getTriSelectMode();
    
    abstract	public	void	setTrianglePaintMode(boolean b_triPaint);
    abstract	public	boolean	getTrianglePaintMode();
    
    abstract	public	void	orbitCamera();
    abstract	public	void	zoomCamera();
    
    abstract	public	void	handleLeftMouseDown(Spatial cl_rootNode, AxesRep cl_curAxes);
    
    public	void	setMouseAlreadyDown(boolean b_mouseDown) {
    	mb_mouseAlreadyDown = false;
    }
    
    abstract	public	void	alignAlongZ();
    abstract	public	void	alignAlongX();
    abstract	public	void	alignAlongY();
    
    abstract	public	void	spaceAlongX();
    abstract	public	void	spaceAlongY();
    abstract	public	void	spaceAlongZ();
}


